#pragma once

#include "mono/pch.h"
#include "mono/Converter.h"

namespace mono
{
    struct Args
    {
        std::vector<void *> m_Values;
        bool Empty()
        {
            return m_Values.size() == 0;
        }
        void Push(void *arg)
        {
            m_Values.push_back(arg);
        }
        template <typename T>
        bool PushArg(const T &t)
        {
            mono::Converter<T> converter;
            void *arg;
            bool res = converter.Encode(arg, t);
            this->m_Values.push_back(arg);
            return res;
        }
    };
}
